const assert = require('assert')


describe('#单元1', function () {
  it('加法', function () {
    assert.equal(1 + 1, 2)
  })
  it('减法', function () {
    assert.equal(2 - 1, 1)
  })
})

describe('#单元2', function () {

  it('Promise异步测试', function () {
    return new Promise(function (resolve, reject) {
      setTimeout(function () {
        if (true) {
          resolve()
        } else {
          reject(new Error('Test Error'))
        }
      })
    })
  })

  it('回调异步测试', function (done) {
    setTimeout(function () {
      if (true) {
        done()
      } else {
        done({msg: 'Test Error'})
      }
    }, 1000)
  })
})

describe('测试钩子', function() {

  before(function() {
    // 在本区块的所有测试用例之前执行
    console.log('before')
  })

  after(function() {
    // 在本区块的所有测试用例之后执行
    console.log('after')
  })

  beforeEach(function() {
    // 在本区块的每个测试用例之前执行
    console.log('beforeEach')
  })

  afterEach(function() {
    // 在本区块的每个测试用例之后执行
    console.log('afterEach')
  })

  it('测试', function () {
    assert.ok(true)
  })
})


// describe('#单元3', function () {

//   it('Promise异步测试', function () {
//     return new Promise(function (resolve, reject) {
//       setTimeout(function () {
//         if (true) {
//           resolve()
//         } else {
//           reject(new Error('Test Error'))
//         }
//       })
//     })
//   })

//   it('回调异步测试', function (done) {
//     setTimeout(function () {
//       if (true) {
//         done()
//       } else {
//         done({msg: 'Test Error'})
//       }
//     }, 1000)
//   })
//   // 只执行这个
//   it.only('测试', function () {
//     assert.ok(true)
//   })
// })

